from flask import Flask
from app.config import config  # 从app文件夹里config.py中导入config字典
from app.extensions import extensions_config # 从app文件夹里extensions.py中导入extensions_config()函数
from app.apis import blueprint_config # 从app文件夹里views文件夹里__init__.py中导入blueprint_config()函数


def create_app(config_name): # 创建app，传入需要的环境配置名，可以灵活地不改代码创建不同配置的对象。也叫工厂函数，专门创建app
    app=Flask(__name__)
    app.config.from_object(config[config_name]) # 根据app文件夹里config.py中的config字典，初始化配置
    # app.config['JSON_AS_ASCII']=False # 写接口只用flask，不用flask-restful时，加这句可以使返回给前端的数据能正常显示中文
    app.config.update(RESTFUL_JSON=dict(ensure_ascii=False)) # 写接口用flask-restful时，加这句可以使返回给前端的数据能正常显示中文
    config[config_name].init_app(app) # 初始化配置。init_app()方法在app文件夹里config.py中父类UniversalConfig定义
    extensions_config(app) # 配置扩展库的对象
    blueprint_config(app) # 配置蓝本
    print(app.url_map) # 当前app的所有路由
    return app